package com.xuecheng.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.order.model.dto.OrdersDTO;
import com.xuecheng.api.order.model.dto.PayResultModel;
import com.xuecheng.order.entity.Orders;

import java.util.Map;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author itcast
 * @since 2021-04-16
 */
public interface OrdersService extends IService<Orders> {

    OrdersDTO createOrder(Long coursePubId, String username);

    /**
     * <p>
     * 创建订单支付信息
     * </p>
     *
     * @param orderNo  订单编号
     * @param username 购买用户名
     * @return Map<String, Object>
     */
    Map<String, Object> createOrderPay(String orderNo, String username);

    /**
     * <p>
     * 解析通知订单 发送消息
     * </p>
     *
     * @param result 支付平台返回参数
     * @return void
     */
    String payNotify(String result);

    /**
     * <p>
     * 本地事务 更改订单状态为已支付
     * </p>
     *
     * @param payResultModel 支付信息数据模型
     * @return void
     */
    void paymentStatusSuccess(PayResultModel payResultModel);

    /**
     * <p>
     * 根据订单编号查询订单信息
     * </p>
     *
     * @param orderNo 订单编号
     * @return OrdersDTO
     */
    OrdersDTO getOrderByOrderNo(String orderNo);


}
